#ifndef SROS_DEVICE_ENCODER_CONFIG_HPP
#define SROS_DEVICE_ENCODER_CONFIG_HPP

#include <commons/config/config.hpp>

namespace sros::device::cfg
{
    struct Encoder
    {
        uint8_t     dir = 0;                  // 0 正向  1 反向
        uint32_t    resolution = 10000;       // 编码器分辨率
        uint16_t    diameter = 100;           // 直径 mm
        float       gear_ratio = 1.0f;        // 减速比
        bool        enable = false;           // 是否启用

        NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Encoder, dir, resolution, diameter, gear_ratio, enable)
    };

    struct EncoderCfg
    {
        Encoder H;
        Encoder V;
        NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(EncoderCfg, H, V)
    };
}

#endif